<?php
  
	$user = $controller->getCurrentUser();
	
	if ($user->isAllowedTo(GRADE_NOTE_BOOK))
	{
		$elementsAllowed = array('book','author','serie','publisher');
		$element = $request->getParam('element');
		$id = $request->getParam('id');
		$rating = $request->getParam('rating');
		$commentary = $request->getParam('commentary');
		
		if (!$id || !is_numeric($id) || !in_array($element, $elementsAllowed))
		{
			$controller->addError('Un param&egrave;tre est erron&eacute; ! Veuillez utiliser les liens du site pour naviguer !');
			$controller->forward('index');
		}
		else if (!$commentary || strlen($commentary) <= 5)
		{
			$controller->addError('Vous devez poster un commentaire de plus de 5 caract&egrave;res !');
			$controller->forward('viewElement');
		}
		else if (!$commentary || strlen($commentary) >= 1000)
		{
			$controller->addError('Vous devez poster un commentaire de moins de 1000 caract&egrave;res (votre commentaire n\'est pas perdu) !');
			$controller->forward('viewElement');
		}
		else if (!$rating || !is_numeric($rating))
		{
			$controller->addError('Veuillez <u>voter</u> pour poster un commentaire ! (Votre texte n\'est pas perdu !)');
			$controller->forward('viewElement');
		}
		else
		{
			$object = call_user_func(array($element, 'singleton'), $id);
			if (!$object->getId())
			{
				$controller->addError('Un param&egrave;tre est erron&eacute; ! Contactez le webmaster si l\'erreur persiste!');
				$controller->forward('viewElement');
			}
			else
			{
				$ratingList = $object->getRatingList();
				if (isset($ratingList[$user->getId()]))
				{
					$controller->addError('Vous avez d&eacute;j&agrave; vot&eacute; pour cet &eacute;l&eacute;ment !');
					$controller->forward('viewElement');
				}
				else
				{			
					$controller->addInformation('Votre vote a bien &eacute;t&eacute; pris en compte !');
					$object->vote($user->getId(), $commentary, $rating);
					$controller->forward('viewElement');
				}
			}
		}
	}
	else
		$controller->render('errorRights');
	
?>
